﻿namespace Kaesoft.Hospedaje.Excepciones
{
    using System;
    using System.Runtime.Serialization;

    /// <summary>
    /// Excepción personalizada del tipo servicios
    /// </summary>
    [Serializable]
    [DataContract]
    public class ExcepcionServicios : ExcepcionBase
    {
        #region Contructores

        /// <summary>
        /// Inicializa una instancia de la excepción de servicios
        /// </summary>
        public ExcepcionServicios()
        {
        }

        /// <summary>
        /// Inicializa una instancia de la excepción de servicios
        /// </summary>
        /// <param name="message">Descripción del error producido</param>
        public ExcepcionServicios(string message)
            : base(message)
        {
        }

        /// <summary>
        /// Inicializa una instancia de la excepción de servicios
        /// </summary>
        /// <param name="message">Descripción del error producido</param>
        /// <param name="exception">Excepción producida</param>
        public ExcepcionServicios(string message, Exception exception)
            : base(message, exception)
        {
        }

        /// <summary>
        /// Inicializa una instancia de la excepción de servicios
        /// </summary>
        /// <param name="message">Descripción del error producido</param>
        /// <param name="innerException">Excepción interna</param>
        public ExcepcionServicios(string message, SystemException innerException)
            : base(message, innerException)
        {
        }

        /// <summary>
        /// Inicializa una instancia de la excepción de servicios
        /// </summary>
        /// <param name="metodoAccion">Nombre del método en el que se produjo el error</param>
        /// <param name="mensaje">Descripción del error producido</param>
        public ExcepcionServicios(string metodoAccion, string mensaje)
            : base(mensaje)
        {
            MetodoAccion = metodoAccion;
        }

        /// <summary>
        /// Inicializa una instancia de la excepción de servicios
        /// </summary>
        /// <param name="metodoAccion">Nombre del método en el que se produjo el error</param>
        /// <param name="mensaje">Descripción del error producido</param>
        /// <param name="excepcion">Excepción producida</param>
        public ExcepcionServicios(string metodoAccion, string mensaje, SystemException excepcion)
            : base(mensaje, excepcion)
        {
            MetodoAccion = metodoAccion;
        }

        /// <summary>
        /// Inicializa una instancia de la excepción de servicios
        /// </summary>
        /// <param name="info">Información serializada</param>
        /// <param name="contexto">
        /// Objeto que describe el orígen y el destino de una secuencia serializada
        /// determinada, proporciona un invocador adicional definido en el contexto.
        /// </param>
        public ExcepcionServicios(SerializationInfo info, StreamingContext contexto)
            : base(info, contexto)
        {
        }

        #endregion
    }
}